{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "fc37904d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-10-20T01:36:48.709042Z",
     "start_time": "2024-10-20T01:36:39.993579Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.datasets import fetch_openml\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "mnist = fetch_openml('mnist_784', parser='auto')\n",
    "x, y = mnist['data'].values, mnist['target'].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "4a13a400",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-10-20T01:53:53.719872Z",
     "start_time": "2024-10-20T01:53:52.018866Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x400 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 假设 x 是图像数据，y 是标签\n",
    "saved_digits = {}  # 字典，用于跟踪已保存的数字\n",
    "fig, axes = plt.subplots(2, 5, figsize=(10, 4))  # 创建 2 行 5 列的子图布局，用于显示\n",
    "\n",
    "# 遍历整个数据集，直到保存了每个数字 0-9\n",
    "for i in range(len(x)):\n",
    "    label = y[i]  # 获取当前样本的标签\n",
    "    if label not in saved_digits:  # 如果该数字还没有被保存\n",
    "        # 在子图布局中显示图像\n",
    "        ax = axes[len(saved_digits) // 5, len(saved_digits) % 5]  # 找到对应的子图\n",
    "        ax.imshow(x[i].reshape(28, 28), cmap='gray')\n",
    "        ax.set_title(f'Label: {label}')\n",
    "        ax.axis('off')\n",
    "\n",
    "        # 创建独立的 figure 用于保存图片\n",
    "        single_fig = plt.figure(figsize=(28/100, 28/100), dpi=100)\n",
    "        plt.imshow(x[i].reshape(28, 28), cmap='gray')\n",
    "        plt.axis('off')\n",
    "        plt.savefig(f'{label}.png', bbox_inches='tight', pad_inches=0)  # 保存图片，文件名为数字\n",
    "        plt.close(single_fig)  # 关闭 figure\n",
    "\n",
    "        saved_digits[label] = True  # 标记该数字已保存\n",
    "\n",
    "    # 如果已经保存了 0-9 共 10 个数字，提前结束循环\n",
    "    if len(saved_digits) == 10:\n",
    "        break\n",
    "\n",
    "# 调整子图布局，避免重叠\n",
    "plt.tight_layout()\n",
    "plt.show()  # 显示 2 行 5 列的网格图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f3285746",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
